LinuxCNC虚拟机环境搭建

您所在的位置:网站首页 debian10安装vmware tools LinuxCNC虚拟机环境搭建

LinuxCNC虚拟机环境搭建

2023-11-28 08:37| 来源: 网络整理| 查看: 265

本文讲述如何在虚拟机上搭建 LinuxCNC 运行环境,以及搭建过程中遇到的问题和对应解决方案。

安装环境的版本:VMware Workstation 16 pro,Debian 7.11,LinuxCNC 2.7.14。

安装 Debian 系统 下载 Debian 系统镜像文件

在 LinuxCNC 官网的 Downloads 页面下载 Debian 7 Wheezy ISO,下载的系统镜像文件为 linuxcnc-2.7.14-wheezy.iso。

安装 Debian 系统镜像

打开 VMware Workstation,新建虚拟机,并在“新建虚拟机向导”中填入 Debian 系统镜像文件的路径,然后按照向导配置虚拟机并进行安装。

以下为安装注意事项。

启动菜单

由于LinuxCNC包含人机界面,因此在启动菜单中选择 “Install(Graphical)”,如下图所示,以便能够启动界面操作软件。

在这里插入图片描述

选择语言

如果选择中文,则在安装完成后,进入系统终端,字体显示间隔不均匀或出现重叠,如下图所示,因此最好选择 English 进行安装。

在这里插入图片描述

网络配置

虚拟机默认的网络配置为 NAT 模式,如果在安装过程中,出现网络无法连接的问题,可以尝试将网络配置修改为桥接模式,如下图所示

在这里插入图片描述

配置软件包管理器

如果在安装过程中出现无法访问软件源的错误,如下图所示,可能是系统镜像中默认的软件源失效了,导致无法更新和安装软件。这里可以先忽略该问题,待系统安装完成后,再修改软件源的地址。

在这里插入图片描述

升级 LinuxCNC

初次安装完 Debian 系统,启动后系统会提示升级 LinuxCNC 版本,如下图所示,按照提示升级 LinuxCNC 版本。

在这里插入图片描述

安装 VMware Tools

启动 Debian 系统,开启虚拟机,点击 VMware 菜单栏“虚拟机”下的“安装 VMware Tools”,之后 Debian 系统的桌面会出现 VMware Tools,然后打开会出现如下图所示的文件列表

在这里插入图片描述

将后缀为 .tar.gz 的压缩文件复制到临时文件夹 /tmp,用 tar -zxvf 命令解压,产生一个 vmware-tools-distrib 文件夹,进入该文件夹并执行 sudo ./vmware-install.pl 命令,输入用户密码,之后一直选择 yes 或者默认即可。

安装完后,重启 Debian 系统,系统界面就可以根据 VMware Workstation 的窗口自动调整大小。

编译 LinuxCNC 源码

参考链接:http://linuxcnc.org/docs/devel/html/code/building-linuxcnc.html

获取 LinuxCNC 源码

这里提供两种方式获取 LinuxCNC 源码,一种是在 Debian 系统中直接从 GitHub 上下载源码,另一种是通过共享的方式,将 Windows 系统上下载的 LinuxCNC 源码拷贝到 Debian 系统中。

从 GitHub 上下载 LinuxCNC 源码

切换到想要存放源码的目录,一般选择 /usr,然后执行命令:sudo git clone -b v2.7.14 git://github.com/linuxcnc/linuxcnc.git linuxcnc2.7.14,即可将 LinuxCNC 的 2.7.14 版本源码下载到 Debian 系统中。

从 Windows 系统拷贝 LinuxCNC 源码

首先,假定 LinuxCNC 源码已经下载到 Windows 系统中;

其次,关闭 Debian 系统,编辑虚拟机设置,启用共享文件夹,并添加 LinuxCNC 源码所在 Windows 系统中的目录,如下图所示

在这里插入图片描述

然后,启动 Debian 系统,切换到 /mnt/hgfs 目录下,即可看到共享的 LinuxCNC 源码。

最后,在 Debian 系统中,将 LinuxCNC 源码拷贝到指定目录,sudo cp -r linuxcnc2.7.14 /usr/linuxcnc2.7.14。

特别说明,这里将 LinuxCNC 源码拷贝到 Debian 系统中的必要性。如果直接在 Windows 共享文件夹中编译 LinuxCNC 源码,会出现 ln: failed to create symbolic link ‘xxx.so’: Operation not supported 错误,这是因为在编译 LinuxCNC 源码时会创建软链接,而 Windows 下的 NTFS 文件系统不支持软链接,导致创建软链接失败。

检查编译依赖包

在 Debian 系统中,LinuxCNC 提供可以收集编译 LinuxCNC 所依赖软件包的检测机制,通过运行检测脚本,能够轻易列出当前系统中所缺失的软件依赖包。具体步骤如下:

第一步,安装检查依赖包的命令:

> sudo apt-get install dpkg-dev

第二步,运行 Debian 系统的配置:

> cd /usr/linuxcnc2.7.14/debian > sudo ./configure uspace > cd ..

第三步,检查依赖包:

> dpkg-checkbuilddeps

执行完后,终端会列出当前系统中尚未安装但编译 LinuxCNC 依赖的软件包名称。若要安装依赖包,使用命令 sudo apt-get install,后面加上软件包的名称;如果一次安装多个依赖包,需要用空格将软件包名称隔开。

可以随时使用命令 dpkg-checkbuilddeps 查看当前系统中尚未安装的依赖包。

以下为安装过程中可能遇到的问题。

无法定位包

在使用 apt-get install xxx 安装依赖包时,一直提示 Unable to locate package 错误,如下图所示

在这里插入图片描述

正常情况下,只需要更新源即可:sudo apt-get update

包已过期

在更新源时,提示包已过期,如下图所示

在这里插入图片描述

出现这种问题,可能原因有两个:一个是系统时间错乱,另一个是软件源的数字签名时间已过。如果想要继续使用数字签名已过期的软件包,可以屏蔽有效性检查,使用如下命令

> sudo apt-get -o Acquire::Check-Valid-Until=false update

否则,需要修改源的地址,链接满足要求的软件包。

包未找到

在更新源时,提示源或包未找到,如下图所示

在这里插入图片描述

在这里插入图片描述

出现这种问题,说明 sources.list 中指向的源失效了,导致更新和安装软件失败。出现这种问题,需要修改 sources.list,首先备份 sources.list,然后编辑 sources.list 中非法的源地址。

> sudo cp /etc/apt/sources.list /etc/apt/sources.list.bak > sudo vi /etc/apt/sources.list

有关 sources.list 的详细说明见附录。

编译 LinuxCNC 源码

当编译 LinuxCNC 源码的依赖包安装完成后,就可以切换到 src 目录下,配置 LinuxCNC 编译环境,然后编译 LinuxCNC 源码,按照下述命令依次执行

> cd /usr/linuxcnc2.7.14/src > sudo ./autogen.sh > sudo ./configure --with-realtime=/usr/realtime-3.4-9-rtai-686-pae/bin/rtai-config > sudo make > sudo make setuid > sudo source ../scripts/rip-environment

以下为编译过程中可能遇到的一些问题。

没有权限

如果在编译过程中出现 Permission denied 错误,则可能是当前用户没有权限,可以在命令前面加上 sudo 后再次执行。

其中,sudo 命令是以系统管理员的身份执行命令,也就是说,经由 sudo 所执行的指令就好像是 root 亲自执行。

无法启动 LinuxCNC

如果在编译完成后,切换到 scripts 目录下,执行 sudo ./linuxcnc 但是无法启动,如下图所示

在这里插入图片描述

出现这种问题的原因是,编译 LinuxCNC 前配置的实时核选项不正确导致,如果配 --real-time=uspace,则可能出现此问题;此时,需要配置 --real-time=/usr/realtime-$VERSION,指定明确的 RTAI 版本。

运行 LinuxCNC

编译完成后,切换到 scripts 目录下,有两种方式运行 LinuxCNC;选择对应的轴配置,通过终端可以查看 LinuxCNC 关联的配置,软件启动后还可以查看软件版本

编译版本的LinuxCNC

运行命令:

> cd /usr/linuxcnc2.7.14/scripts > sudo ./linuxcnc

如下图所示,选择轴配置

在这里插入图片描述

如下图所示,软件启动后,查看 LinuxCNC 的关联配置及软件版本

在这里插入图片描述

如下图所示,取消急停后,打开电源,然后就可以进行仿真运动,比如回零、手动运动、自动加工等。

在这里插入图片描述

内置版本的 LinuxCNC

运行命令:

> cd /usr/linuxcnc2.7.14/scripts > which linuxcnc > linuxcnc

如下图所示,选择轴配置

在这里插入图片描述

其中,which linuxcnc 用于查看 linuxcnc 命令的脚本位置。

如下图所示,软件启动后,查看 LinuxCNC 的关联配置及软件版本

在这里插入图片描述

附录 软件源 sources.list 文件格式说明

在安装完 debian 操作系统之后需要修改 sources.list 文件,否则无法在线更新软件,下面简要讲解下 sources.list 文件中各个配置项的具体含义。

deb http://archive.debian.org/debian wheezy main contrib non-free deb-src http://archive.debian.org/debian wheezy main contrib non-free deb http://archive.debian.org/debian-security wheezy/updates main contrib non-free deb-src http://archive.debian.org/debian-security/ wheezy/updates main contrib non-free

其中,可以将每一行分为四个部分,当你在线更新某个软件时,debian 就是遵照这四个选项(准确的说是后三项)的指示找到软件来安装的:

deb ### ftp地址 ### 版本代号 ### 限定词 deb ### http://archive.debian.org/debian ### wheezy ### main contrib non-free 第一部分

第一部分为 deb 或者 deb-src,其中前者代表软件的位置,后者代表软件的源代码位置。

第二部分

第二部分为 ftp 地址,在浏览器中打开此链接以后会发现有如下图所示内容:

在这里插入图片描述

其中,

dists/ 目录包含“发行版”(distributions),此处是获得 Debian 发布版本(releases)和已发布版本(pre-releases)的软件包的正规途径。有些旧软件包及 packages.gz 文件仍在里面。

pool/ 目录为软件包的物理地址。软件包均放进一个巨大的“池子(pool)”,按照源码包名称分类存放。为了方便管理,pool 目录下按属性再分类(“main”,“contrib” 和 “non-free”),分类下面再按源码包名称的首字母归档。这些目录包含的文件有:运行于各种系统架构的二进制软件包,生成这些二进制软件包的源码包。

project/ 目录大部分为开发人员的资源。

tools/ 目录用于创建启动盘,磁盘分区,压缩/解压文件,启动 Linux 的 DOS 下的小工具。

第三部分

第三部分表示 debian 版本号,debian 的发行版本名称大都来自玩具总动员中的角色名称。每个稳定的发行版都会有一个代号,如 debian 6 叫做 squeeze,debian 7 叫做 wheezy 等;处于测试阶段的 debian 发行版,如 wheezy 往下发展就是 jessie 了。

第四部分

从水平的角度介绍完 debian 发行版,现在我们进入这些目录大致看一下里面的内容(以 wheezy 目录为例),如下图所示 在这里插入图片描述

我们会发现每个目录都会包含 contrib、main、non-free 等这几个目录,那么这些目录又分别是什么呢?

以垂直的观点来看 debian 软件的分布:main、contrib、non-free、non-us。

因为 debian 是非营利组织,但是组织架构严谨,有一套完善的软件管理方式。基于其对软件 free 度的一种坚持,对不同版权软件包的录入有一些限定。

下面是对它们的一些简要介绍:

main Debian 里最基本及主要且符合自由软件规范的软件(packages)。

contrib 这里头软件虽然可以在 Debian 里头运作,即使本身属于自由软件但多半却是相依于非自由(non-free)软件。

non-free 不属于自由软件范畴的软件。

non-us 这个分类里头的软件都来自非美国地区,当中可能有牵扯到专利、加密等等问题。

marillat 对应 Christian Marillat 的软件仓库,包括 mplayer、transcode 等。

rareware 对应 rarewares.org 的软件仓库,包括很多音效程序,如 lame、musepack、beep media player 等。

ustc 对应 debian@ustc 维护的一些软件包,如 mule-gbk,gaim-openq,scim,stardict dicts,patched xpdf,irssi,xmms。

java 对应 Blackdown java。包括 j2re,j2sdk,mozilla java plugin。

firefly 对应打过 firefly 补丁的包,包括 fontconfig mozilla mozilla-firefox pango1.0 qt-x11-free xft

misc 对应其它无分类的包,包括 nvidia-kernel,winex3,rox,chmsee 等

按需修改自己的 sources.list

Debian 有自己独特的版本系统,整个系统有三个版本,分别为稳定版、测试版和不稳定版。每次发布的版本都是稳定版,而测试版在经过一段时间的测试证明没有问题后会成为新的稳定。因为稳定版是会更新的,为了便于区分不同时期的稳定版,每个版本又有自己特有的代号(codename),现在的稳定版称为 wheezy(debian7),测试版称为 jessie,而不稳定版的代号永远是 sid。

sources.list的写法

找到包含 dists 和 pool 这两个目录的那个目录,把地址记下来,比如 http://archive.debian.org/debian/;打开 dists,记录里面包含的目录名字,比如包含 wheezy、jessie 等;打开 pool 目录,看看里面包含哪些组件目录,比如 main、contrib、non-free;书写格式:deb ,如 deb http://archive.debian.org/debian/ wheezy main contrib non-free。 更新软件包列表信息,升级 Debian

修改 /etc/apt/sources.list 之后一般会运行下面两个命令进行更新升级:

> sudo apt-get update > sudo apt-get dist-upgrade

其中,update - 取回更新的软件包列表信息,dist-upgrade – 发布版升级。

第一个命令仅仅更新的软件包列表信息,所以很快就能完成;第二个命令是全面更新发布版,一般会下载几百兆的新软件包。

其实在运行完第一个命令后系统就会提示你进行更新升级。因为修改了源,所以这次更新的改动可能会很大,比如安装某个包可能会删除太多的其他包,所以系统会提示你运行 sudo apt-get dist-upgrade 进行全面升级或使用软件包管理器中的“标记全部软件包以便升级”功能进行升级。两者效果是一样的。



【本文地址】


今日新闻


推荐新闻


CopyRight 2018-2019 办公设备维修网 版权所有 豫ICP备15022753号-3